#ifndef _CAM_CONTROLLER_KB_H_
#define _CAM_CONTROLLER_KB_H_

#include "cam_controller.h"
#include "math/vec2.h"
#include "input/keyboard.h"


namespace camera 
{


///////////////////////////////////////////////////////
///	\brief	Camera controller
///         Provides functionality for accessing and updating 
///         cameras along splines, by kb or mouse.
///////////////////////////////////////////////////////
class CamControllerKB : public CamController, public input::KeyboardListener
{
public:
    /**
    * Setup the controller
    */
                    CamControllerKB();
    /**
    * Delete the controller
    */
    virtual			~CamControllerKB();
    /**
    * Update the camera passed in.
    * @param _pCam  Pointer to camera to update
    */
    virtual void     Tick(AbstractCamera* _pCam, float dt);

	virtual void	KeyDown(input::Keyboard::KEY* pKey);


    /// Observer callbacks
/*    void            Joyone(int _i);
    void            Joytwo(int _i);
    void            Joythree(int _i);
    void            Joyfour(int _i);

    void            LeftMouse(int _i);
    void            RightMouse(int _i);
    void            MidMouse(int _i);

    void            ForwardCB(int _i);
    void            BackwardCB(int _i);
    void            LeftCB(int _i);
    void            RightCB(int _i);

    void            TurnUpCB(int _i);
    void            TurnDownCB(int _i);
    void            TurnLeftCB(int _i);
    void            TurnRightCB(int _i);

    void moveCam ( const input::JoyEvent * const _evt );
*/
private:
    /// Cached movement vector
    math::Vec2      m_Move;
    /// Cached turning  vector
    math::Vec2      m_Turn;
};

};  // end namespace camera

#endif  // _CAM_CONTROLLER_KB_H_